/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/9/19 11:10
 * @Copyright
 */
package String2;
public class StringTest2 {
    public static void main(String[] args) {
        //1、(掌握) charAt(int index)
        char c="中国人".charAt(1);
        System.out.println(c); //输出国

        //2、(了解) compareTo(String anotherString)
        int result="abc".compareTo("abc");
        //字符串之间比较大小不能直接使用><,需要使用compareTo方法
        System.out.println(result); //输出0 前后一致

        int result2 = "abc".compareTo("abce");
        System.out.println(result2);//-1(小于0) 前小后大  8  -  9  = -1

        int result3 = "abce".compareTo("abcd");
        System.out.println(result3);//1（大于0）前大后小  9 - 8 =1

        System.out.println("xyz".compareTo("xyz"));//-1

        //3、（掌握）contains(CharSequence s)
        //判断前面的字符串中是否包含后面的子字符串
        System.out.println("HelloWorld.java".contains(".java"));//true
        System.out.println("http://www.baidu.com".contains("https://"));//false

        //4、(掌握)endsWith(String suffix)
        //判断当前字符串是否以某个字符串结尾
        System.out.println("test.txt".endsWith(".java"));//false
        System.out.println("test.txt".endsWith(".txt"));//true
        System.out.println("jdifasjfkdjsifadsjfkjdsfidscjaksfid".endsWith("id"));//true

        //5、(掌握)boolean equals(Object anObject)
        //将此字符串与指定对象进行比较。  比较字符串不能使用“==”
        System.out.println("abc".equals("abc"));

        //6、(掌握)boolean equalsIgnoreCase(String anotherString)
        //判断两个字符串是否相等，并且忽略大小写
        System.out.println("ABc".equalsIgnoreCase("abC"));//true

        //7、(掌握)getBytes()
        //将字符串对象转换成字节数组
        byte[] bytes = "abcdef".getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }
        //8、(掌握)boolean isEmpty()
        //判断某个字符串是否为空
        String s = "";
        System.out.println(s.isEmpty());//true

        //9、(掌握)int indexOf(int ch)
        //返回指定字符第一次出现的字符串内的索引(下标)。
        System.out.println("oraclejavac++.nextC#phppythonjavaoraclec++".indexOf("java"));//6

        //10、(掌握) length()
        //面试题：判断数组长度和判断字符串长度不一样
        //判断数组长度是length属性，判断字符串长度是length()方法
        System.out.println("abc".length());//3
        System.out.println("".length());//0
        //11、(掌握)lastIndexOf(int ch)
        //返回指定字符的最后一次出现的字符串中的索引。
        System.out.println("oraclejavac++.nextC#phppythonjavaoraclec++".lastIndexOf("java"));//29

        //12、(掌握)replace(char oldChar, char newChar)
        //替换
        String newString = "http://www.baidu.com".replace("http://","https://");
        System.out.println(newString);//https://www.baidu.com
        //把以下字符串中"="替换成":"
        String newString2 = "name=zhangsan&password=123&age=20".replace("=",":");
        System.out.println(newString2);

        //13、（掌握）split（String regex）
        String[] ymd = "1980-10-11".split("-");
        for (int i = 0;i< ymd.length;i++){
            System.out.println(ymd[i]);

            //14、(掌握）boolean startsWith(String prefix)
            //判断某个字符串是否以指定的字符串开始
            System.out.println("http://www/baidu.com".startsWith("http")); //true
            System.out.println("http://www/baidu.com".startsWith("https"));//false

            //15、（掌握）String subatring(int beginIndex)参数是起始下标
            //截取字符串
            System.out.println("http://www/baidu.com".substring(7)); //www/baidu.com

            //16、(掌握)substring(int beginIndex,int endIndex)
            //beginIndex 起始位置（包括）
            //endIndex 结束位置（不包括）
            System.out.println("http://www/baidu.com".substring(7,10)); //www

            //17、(掌握）toCharArray()
            //将字符串转换成新的字符数组
            char[] chars="我是中国人".toCharArray();
            for ( i=0;i< chars.length;i++){
                System.out.println(chars[i]);
            }

            //18、(掌握）toLowerCase()
            //蒋所有在此字符串String 使用默认语言环境的规则，以小写
            System.out.println("adsfrgtrbhgterdtgfwse".toLowerCase());

            //19、(掌握）toUpperCase()
            //转大写
            System.out.println("sfrfrgthgbt".toUpperCase());

            //20、（掌握）trim()
            //去除字符串前后空白
            System.out.println("      word       ".trim());

            //21(掌握) String中只有一个方法是静态的，不需要new对象
            //这个方法叫做valueOf
            //作用：将“非字符串”转换成“字符串”
            String s1 = String.valueOf(true);
            String s2 = String.valueOf(100);
            String s3 = String.valueOf(3.14);
            //没有重写toString之前 是对象内存地址 com.hx.str.User@3b9a45b3
            String s4 = String.valueOf(new User());
            System.out.println(s4);
            //重写toString()方法之后 User{id=0, name='null'}

            //为什么输出一个引用的时候，会调用toString()方法？
            Object obj = new Object();
            System.out.println(obj);
            System.out.println(true);
            System.out.println(9.8);
            System.out.println(8);
        }
    }
}

